u64 start = s;
u64 end = e;
int i;
+
+#ifndef CONFIG_XEN
for (i = 0; i < e820.nr_map; i++) {
struct e820entry *ei = &e820.map[i];
+#else
+ if (!is_initial_xendomain())
+ return 0;
+ for (i = 0; i < machine_e820.nr_map; ++i) {
+ const struct e820entry *ei = &machine_e820.map[i];
+#endif
if (type && ei->type != type)
continue;
/* is the region (part) in overlap with the current region ?*/
*/
static int __init request_standard_resources(void)
{
-#ifdef CONFIG_XEN
- struct xen_memory_map memmap;
-#endif
int i;
/* Nothing to do if not running in dom0. */
printk("Setting up standard PCI resources\n");
#ifdef CONFIG_XEN
- memmap.nr_entries = E820MAX;
- set_xen_guest_handle(memmap.buffer, machine_e820.map);
-
- if (HYPERVISOR_memory_op(XENMEM_machine_memory_map, &memmap))
- BUG();
- machine_e820.nr_map = memmap.nr_entries;
-
legacy_init_iomem_resources(machine_e820.map, machine_e820.nr_map,
&code_resource, &data_resource);
#else
static void __init register_memory(void)
{
-
#ifdef CONFIG_XEN
- e820_setup_gap(machine_e820.map, machine_e820.nr_map);
-#else
- e820_setup_gap(e820.map, e820.nr_map);
+ if (is_initial_xendomain()) {
+ struct xen_memory_map memmap;
+
+ memmap.nr_entries = E820MAX;
+ set_xen_guest_handle(memmap.buffer, machine_e820.map);
+
+ if (HYPERVISOR_memory_op(XENMEM_machine_memory_map, &memmap))
+ BUG();
+
+ machine_e820.nr_map = memmap.nr_entries;
+ e820_setup_gap(machine_e820.map, machine_e820.nr_map);
+ }
+ else
#endif
+ e820_setup_gap(e820.map, e820.nr_map);
}
#ifdef CONFIG_MCA
int __init e820_all_mapped(unsigned long start, unsigned long end, unsigned type)
{
int i;
+
+#ifndef CONFIG_XEN
for (i = 0; i < e820.nr_map; i++) {
struct e820entry *ei = &e820.map[i];
+#else
+ extern struct e820map machine_e820;
+
+ if (!is_initial_xendomain())
+ return 0;
+ for (i = 0; i < machine_e820.nr_map; i++) {
+ const struct e820entry *ei = &machine_e820.map[i];
+#endif
+
if (type && ei->type != type)
continue;
/* is the region (part) in overlap with the current region ?*/
void __init setup_arch(char **cmdline_p)
{
#ifdef CONFIG_XEN
- struct xen_memory_map memmap;
-
/* Register a call for panic conditions. */
atomic_notifier_chain_register(&panic_notifier_list, &xen_panic_block);
probe_roms();
#ifdef CONFIG_XEN
if (is_initial_xendomain()) {
+ struct xen_memory_map memmap;
+
memmap.nr_entries = E820MAX;
set_xen_guest_handle(memmap.buffer, machine_e820.map);